package com.codewsq;

/**
 * 递归方法
 */
public class RecursionTest {

    public static void main(String[] args) {
        /*
         * 计算100以内的自然数之和
         * */
        // 方式一：for循环
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println(sum);

        // 方式二：递归方法
        RecursionTest recursionTest = new RecursionTest();
        System.out.println(recursionTest.getSum(100));

        // 斐波那契数列，计算数列的第n个值, 1、1、2、3、5、8、13、21、……
        int fibonacci = recursionTest.fibonacci(8);
        System.out.println(fibonacci);
    }


    /*
     * 递归方法
     * */
    public int getSum(int n) {
        if (n == 1) {
            return 1;
        } else {
            return n + getSum(n - 1);
        }
    }

    /*
     *
     * 斐波那契数列，计算数列的第n个值，并将整个数列打印出来
     * */
    public int fibonacci(int n) {
        if (n <= 2) {
            return 1;
        }
        return fibonacci(n - 1) + fibonacci(n - 2);
    }

}
